﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CRC.Clases;
using NHibernate;
using CRC.NHibernate;
using CRC.Inspecciones.Dominio.Clases;

namespace CRC.Inspecciones.Dominio.Controlador
{
    class ControladorModificarInspeccionPeriodica
    {

        private InspeccionPeriodica Inspeccion = null;

        /*
         * Descripción: Guarda los datos indicados de la hoja como borrador o como
         * datos definitivos
        */
        public void Add_Observaciones(int pIntHojaInps, string pStrDatos, int Id_Salon, string Id_estado)
        {

            ISession session = null;
            ITransaction tx = null;

            try
            {

                session = NHibernate.NHibernateHelper.GetCurrentSession();
                tx = session.BeginTransaction();


                //Registrar linea de seguimiento
                //LineaSeguimiento_Simple lineaInspeccion = new LineaSeguimiento_Simple(Id_Salon, DateTime.Today, Id_estado);

                //session.Save(lineaInspeccion);

                this.Inspeccion = (InspeccionPeriodica)session.Load(typeof(InspeccionPeriodica), pIntHojaInps);
                this.Inspeccion.Observaciones = pStrDatos;

                session.Update(Inspeccion);
                tx.Commit();

            }
            catch (HibernateException he)
            {
                if (tx != null) { tx.Rollback(); }
                if (session != null) session.Close();
                throw he;
            }

        }

        public void Finalizar(int pIntHojaInps, int Id_Salon)
        {

            ISession session = null;
            ITransaction tx = null;
            InspeccionPeriodica InspeccionNueva = null;

            try
            {

                session = NHibernate.NHibernateHelper.GetCurrentSession();
                tx = session.BeginTransaction();


                //Registrar linea de seguimiento
                LineaSeguimiento_Simple lineaInspeccion = new LineaSeguimiento_Simple(Id_Salon, DateTime.Today, "FIN");

                session.Save(lineaInspeccion);

                this.Inspeccion = (InspeccionPeriodica)session.Load(typeof(InspeccionPeriodica), pIntHojaInps);
                this.Inspeccion.HaFinalizado = true;

                session.Update(Inspeccion);

                InspeccionNueva = new InspeccionPeriodica(this.Inspeccion.Inspeccionado, this.Inspeccion.Mes, this.Inspeccion.Año+2);
                session.Save(InspeccionNueva);

                tx.Commit();

            }
            catch (HibernateException he)
            {
                if (tx != null) { tx.Rollback(); }
                if (session != null) session.Close();
                throw he;
            }

        }
    }
}